import {reqGetCartList,reqChangeIschecked,reqDeleteCartGood} from '@/api'

const state = {
    // 保存购物车列表数据
    cartInfo:[]
}
const actions = {
    async getCartList({commit}){
        // 获取购物车数据
        const result = await reqGetCartList()
        if(result.code===200) commit('GETCARTLIST',result.data) 
    },
    // 修改购物车中商品的isChecked，选中与否的状态
    async changeIschecked({commit},params){
        const result = await reqChangeIschecked(params)
        if(result.code===200) return 'ok'
        else return Promise.reject(new Error('fail'))
    },
    // 删除购物车中商品
    async deleteCartGood({commit},id){
        const result = await reqDeleteCartGood(id)
        if(result.code===200) return 'ok'
        else return Promise.reject(new Error('fail'))
    }
}
const mutations = {
    GETCARTLIST(state,data){
        state.cartInfo = data
    }
}
const getters = {
    // 为什么加 || {}  ?  防止刷新页面报错
    // 因为在cart页面刷新的时候，会重新执行mounted中的代码获取数据，可能还没执行到mutations，就已经去获取state中的数据了
    // 因为state中没有数据，那么state.cartInfo是null，state.cartInfo[0]是undefined，
    // 那么在cart页面取数据时（undefined.cartInfoList）就会报错
    cartInfo:state=>state.cartInfo[0] || {}
}

export default {state,actions,mutations,getters}